import bus from '@/framework/plugins/bus'
import { JsonParse } from '@/framework/utils/index'

class Socket{
	constructor(url,token){
		this.isLink = false
		this.socketTask = this.createSocketTask(url,token)
	}
	createSocketTask(url,token){
		const socketTask = uni.connectSocket({
			header: {
				'content-type': 'application/json',
				'Authorization': token
			},
			url: url, 
			// protocols: ['protocol1'],
			complete: () => {}
		});
		socketTask.onOpen((res) => {
			this.isLink = true
			console.log('WebSocket连接已打开！');
		})
		socketTask.onError(res => {
			this.isLink = false
			console.log('WebSocket连接失败！',res);
		})
		socketTask.onMessage((res) => {
			console.log('接收到消息', res)
			if(!res.data){
				return;
			}
			const data = JsonParse(res.data)
			if(data.modelType){
				bus.$emit(data.modelType,data.body)
			}
		})
		return socketTask
	}
}

let socketObj = null

export function createSocket(url,token){
	if(!socketObj){
		socketObj = new Socket(url,token)
	}
	return socketObj 
}

export default Socket

// export function createSocket(url){
// 	const socketTask = uni.connectSocket({
// 		header: {
// 			'content-type': 'application/json'
// 		},
// 		url: url, 
// 		// protocols: ['protocol1'],
// 		complete: () => {}
// 	});
// 	socketTask.onOpen((res) => {
// 		console.log('WebSocket连接已打开！');
// 	})
// 	socketTask.onError(res => {
// 		 console.log('WebSocket连接失败！',res);
// 	})
// 	socketTask.onMessage((res) => {
// 		console.log('接收到消息', res)
// 		if(!res.data){
// 			return;
// 		}
// 		const data = JsonParse(res.data)
// 		if(data.modelType){
// 			bus.$emit(data.modelType,data.body)
// 		}
// 	})
// 	return socketTask
// }